In Ruby, l'ereditarietà non riguarda solo il condivisione di metodi; riguarda l' evoluzione dello stato. Quando creiamo una sottoclasse come KaraokeSong < Song, stabiliamo un rapporto "è-un" in cui il figlio eredita la struttura del genitore mentre ne perfeziona l'identità.
1. La catena di inizializzazione
La super parola chiave è il ponte tra le generazioni. All'interno initialize, chiamando super passa gli argomenti al costruttore del genitore, garantendo che le variabili di istanza di base (@name, @artista) siano impostate prima che la sottoclasse aggiunga il suo stato specifico (@testo).
2. Aumento del metodo
Sovrascrivendo un metodo come to_s ci permette di estendere il comportamento. Chiamando super all'interno della nuova definizione, catturiamo l'output stringa del genitore e semplicemente aggiungiamo i nuovi dati della sottoclasse, mantenendo un percorso evolutivo pulito.